<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page
	import="java.util.List,java.util.Map,java.util.HashMap,hyl.core.MyFun,com.servlet.*"%>
<%@ page import="hyl.ext.base.*,com.dao.SqlOfUser,hyl.base.cache2.*"%>
<%@ page
	import="hyl.ext.web.ms.*,com.alibaba.fastjson.JSON,hyl.core.db.MyDB"%>
<%
//bug  请求可以重复使用
String basePath = Response.getBasePath(request);

TMsA _ma = My.getMsA();

String appid = request.getParameter("app");
String 密文 = request.getParameter("mm");
//MyFun.print("密文", 密文);
if (MyFun.isBlank(appid))
	return;
BInfo bInfo = _ma.getBInfo(appid);
String mm = bInfo.aes解密64(密文);
//MyFun.print("mm", mm);
String[] mms = mm.split(",");

String appid_b = mms[0];
Integer userid_b = MyFun.str2int(mms[1]);
String uname_b = mms[2];
String session_b = mms[3];
String tempkey = mms[4];
String userbip = mms[5];
// BInfo bInfo = _ma.getBInfo(appid_b);
// MyFun.print("------1--------", key, tempkey);
if (MyFun.isBlank(appid_b) || !_ma.containApp(appid_b) || !appid.equals(appid_b) || MyFun.isEmpty(userid_b))
	return;
if (MyFun.isBlank(tempkey))
	return;
// 如果令牌不对,说明密文不对 ,说明来自的b系统 不正确 阻止登录
String result = _ma.req向B提问(appid_b, TMsA.S验证令牌, tempkey);
//MyFun.print("------1-session_b-------",tempkey,result);
if (MyFun.isEmpty(result) || result.charAt(0) != 'Y')
	return;
// MyFun.print("-------2-------", _ma.containApp(appid_b), appid_b, userid_b, JSON.toJSONString(_ma.getMap().keySet()));
// 如果 appid 为空或者未在中心注册 或者 用户b账号为空,阻止登录,必须先在b注册账号
// 如果用户 未在中心注册 转到注册页面 注册并绑定
ABOpen openb = _ma.getABOpen2(appid_b, userid_b);
//MyFun.print(appid_b, userid_b);
//System.out.print("------openb--------");
//MyFun.printJson(openb);
if (openb == null) {
	ExToken etoken = _ma.createExToken();
	etoken.setI可用次数(3);
	// 转到注册页面
	Map<String, Object> map = new HashMap<>();
	map.put("uidb", userid_b);
	map.put("unameb", uname_b);
	map.put("appb", appid_b);
	map.put("ipb", userbip);
	map.put("sidb", session_b);
	etoken._附件 = map;
	//把参数放到etoken 传递到 注册页
	//如果打开注册页面 没有etoken 参数,就跳转到404
	//如果 有etoken 参数,手动输入用户名和密码 完成注册 默认权限是
	request.getSession().setAttribute("t", etoken.getId());
	//regBUser.jsp -->dao/regBUser_dao.jsp
	//MyFun.print("-----3---------", etoken.getId());
	Response.direct(response, basePath + "admin/regBUser.jsp");
} else {
	openb.sidB = session_b;
	openb.ipB = userbip;

	String aurl = _ma._binfo.getAURL();
	//通过用户id 获取会话	,如果找不到新建一个会话
	MySession sessA = SessionFactory.getSsoSession(openb.uidA, userbip);
	//MyFun.printJson(sessA);
	//通过用户编号 获取用户属性
	Map<String, Object> ma = _ma.getUserByID(openb.uidA);
	//System.out.print("-------ma-------");
	//MyFun.printJson(ma);
	//完善会话信息
	SqlOfUser.instance().setLoginSession(sessA, ma);
	//MyFun.print(sessA.toJsonString(),"-----------");
	//把会话 压入 request 和session 的attribute 传递到下一级
	Response.addCookie(response, SessionFactory.SessionKey, sessA.getTokenId(),
				SessionFactory.EFFECTTIMES.intValue());
	SessionFactory.putSession(request, sessA);
	openb.sidA = sessA.getTokenId();
	_ma.updateABOpen(openb);
	//MyFun.print("-----5---------",aurl,Response.getBasePath(request));
	// 转到首页
	Response.direct(response, basePath + "admin/main.jsp");
	return;
}
%>